package com.xscha.tableforge.service;

import com.xscha.tableforge.model.entity.Space;
import com.xscha.tableforge.model.vo.PageReq;
import com.xscha.tableforge.model.vo.PageResult;

import java.util.List;
import java.util.Optional;

/**
 * 空间服务接口
 * 提供空间的增删改查等操作
 */
public interface SpaceService {

    /**
     * 查找所有空间
     *
     * @return 空间列表
     */
    List<Space> findAll();

    /**
     * 根据ID查找空间
     *
     * @param id 空间ID
     * @return 包含空间的Optional对象
     */
    Optional<Space> findById(String id);

    /**
     * 分页查询空间
     *
     * @param pageRequest 分页请求参数
     * @return 分页结果
     */
    PageResult<Space> findPage(PageReq pageRequest);

    /**
     * 创建新的空间
     *
     * @param space 空间对象
     * @param userId 创建者用户ID
     * @return 创建后的空间对象
     */
    Space createSpace(Space space, String userId);

    /**
     * 更新空间信息
     *
     * @param space 空间对象
     * @param userId 修改者用户ID
     * @return 更新后的空间对象
     */
    Space updateSpace(Space space, String userId);

    /**
     * 删除空间
     *
     * @param id 空间ID
     * @param userId 删除者用户ID
     */
    void deleteSpace(String id, String userId);
}